package com.demo.chainOfResponsibility14;

/**
 * 四个具体处理者：辅导员：Instructor.java
 */
public class Instructor extends Leader{
 
    public Instructor(String name){
        super(name);
    }

    /**
     * 四、纯的与不纯的责任链模式：
     * （1）纯的责任链模式要求处理者对象只能在两个行为中选择一个：一是承担责任，二是把责任推给下家，
     * 不允许出现某一个具体处理者对象在承担了一部分责任后又把责任向下传的情况。
     *
     * （2）在纯的责任链模式里面，请求必须被某一个处理者对象所接收；在不纯的责任链模式里面，
     * 一个请求可以最终不被任何接收端对象所接收。
     * @param LeaveNode 请假条
     */
    @Override
    public void handleRequest(LeaveNode LeaveNode) {
        if(LeaveNode.getNumber() <= 3){   //小于3天辅导员审批
            System.out.println("辅导员" + name + "审批" +LeaveNode.getPerson() + "同学的请假条,请假天数为" + LeaveNode.getNumber() + "天。");
        }
        else{     //否则传递给系主任
            if(this.successor != null){
                this.successor.handleRequest(LeaveNode);
            }
        }
    }
 
}